package com.ttt.util;

import com.ttt.tank.EnemyTank;
import com.ttt.tank.Tank;

import java.util.ArrayList;
import java.util.List;

/**
 * 敌人坦克对象池
 */
public class EnemyTanksPool {

    public static final int Default_Pool_Size = 30;
    public static final int Pool_Max_Size = 30;
    //用于保存敌人坦克的容器
    private static List<Tank> pool = new ArrayList<>();

    //在类加载的时候创建30个坦克对象添加到容器中
    static {
        for (int i = 0;i < Default_Pool_Size; i++){
            pool.add(new EnemyTank());
        }
    }

    /**
     * 从池塘中获取一个坦克对象
     * @return
     */
    public static Tank get(){
//        System.out.println("从对象池中获取了一个对象，剩余："+pool.size());
        Tank tank = null;
        if (pool.size() == 0){
            tank = new EnemyTank();
        }else {//池塘中还有对象，拿走第一个位置的坦克对象
            tank = pool.remove(0);
        }
        return tank;
    }
    //坦克被销毁的时候，归还到池塘中来
    public static void theReturn(Tank tank){
        //池塘中的坦克个数已经到达了最大值。那就不再归还
        if (pool.size() == Pool_Max_Size){
            return;
        }
        pool.add(tank);
    }
}
